#include "qmyispratnici.h"
#include "qizleznifakturivnes.h"
#include "qizleznifakturikorekcija.h"
#include "qpltmvnes.h"
#include "qpltmkorekcija.h"
#include "qFinNalvnes.h"
#include "qFinNalKorekcija.h"


QMyIspratnici::QMyIspratnici(QWidget *parent)
    : QMyBaseWidget(parent)
    ,ispratniciVnes(0)
    ,ispratniciKorekcija(0)
    ,ispratniciLista(0)
	,m_row(0)
{
    ui.setupUi(this);
    pressF4();
}

QMyIspratnici::~QMyIspratnici()
{

}
void QMyIspratnici::pressF2()
{
    closeAllForm();
    ispratniciVnes = showMyWidget<QIspratniciVnes>(ispratniciVnes); 
    ispratniciVnes->setCategoryWidget(this);
    connect(ispratniciVnes,SIGNAL(closeW()),this,SLOT(closeW()));
    connect(ispratniciVnes,SIGNAL(scallKomintenti(QWidget*, QString)),this,SLOT(callKomintenti(QWidget*, QString)));
    connect(ispratniciVnes,SIGNAL(scallArtikli(QWidget*, QString)),this,SLOT(callArtikli(QWidget*, QString)));
	emit disablePrint(true);
}
void QMyIspratnici::pressF3()
{
    if(!ispratniciLista)
    {
        return;
    }
    int id = ispratniciLista->getSelectedId();
    closeAllForm();
    ispratniciKorekcija = showMyWidget<QIspratniciKorekcija>(ispratniciKorekcija); 
    ispratniciKorekcija->setCategoryWidget(this);
    connect(ispratniciKorekcija,SIGNAL(closeW()),this,SLOT(closeW()));
    connect(ispratniciKorekcija,SIGNAL(scloseW1()),this,SLOT(closeW1()));
    connect(ispratniciKorekcija,SIGNAL(scallKomintenti(QWidget*, QString)),this,SLOT(callKomintenti(QWidget*, QString)));
    connect(ispratniciKorekcija,SIGNAL(scallArtikli(QWidget*, QString)),this,SLOT(callArtikli(QWidget*, QString)));
    ispratniciKorekcija->init(id);
	emit disablePrint(true);
}
void QMyIspratnici::pressF4()
{
    closeAllForm();
    ispratniciLista = showMyWidget<QIspratniciLista>(ispratniciLista); 
    ispratniciLista->setCategoryWidget(this);
	ispratniciLista->setRow(m_row);
    connect(ispratniciLista,SIGNAL(closeW()),this,SLOT(closeWLista()));
    connect(ispratniciLista,SIGNAL(procF2()),this,SLOT(procF2()));
    connect(ispratniciLista,SIGNAL(procF3()),this,SLOT(procF3()));
    connect(ispratniciLista,SIGNAL(procDel()),this,SLOT(procDel()));
	connect(ispratniciLista, SIGNAL(sIspratnicaToIzlFaktura(QString&, QString&, izlFakturaData&)), this, SLOT(retPriemnicaToKalkulacija(QString&, QString&, izlFakturaData&)));

	emit disablePrint(false);
}
void QMyIspratnici::procF2()
{
    pressF2();
}
void QMyIspratnici::procF3()
{
    pressF3();
}

void QMyIspratnici::refresh()
{
}

void QMyIspratnici::procDel()
{

}
void QMyIspratnici::pressEscape()
{
    this->raise();
    this->setFocus();
	emit disablePrint(true);
    emit signCloseMyWidget();
}
void QMyIspratnici::closeW()
{
    pressF4();
}

void QMyIspratnici::closeW1()
{
    pressF4();
}

void QMyIspratnici::closeWLista()
{
    pressEscape();
}

void QMyIspratnici::closeAllForm()
{
    ispratniciKorekcija = deleteMyWidget<QIspratniciKorekcija>(ispratniciKorekcija);
    ispratniciVnes = deleteMyWidget<QIspratniciVnes>(ispratniciVnes);
	if (ispratniciLista)
	{
		m_row = ispratniciLista->getRow();
	}
    ispratniciLista = deleteMyWidget<QIspratniciLista>(ispratniciLista);
}
void QMyIspratnici::callKomintenti(QWidget* myobj, QString text)
{
    emit signKomintentiFromIspratnica(myobj, text);
}

void QMyIspratnici::callArtikli(QWidget* myobj, QString text)
{
    emit signArtikliFromIspratnica(myobj, text);
}

void QMyIspratnici::sendPrintMessage()
{
    emit signPrint();
}


QStandardItemModel* QMyIspratnici::getModel()
{
    QStandardItemModel * modelExt;
    if (ispratniciLista)
    {
        modelExt = ispratniciLista->model;
    } 
    else
    {
        modelExt = NULL;
    }
    return modelExt;
}

QStandardItemModel* QMyIspratnici::getModel2()
{
    QStandardItemModel * modelExt;
    if (ispratniciLista)
    {
        modelExt = ispratniciLista->model2;
    } 
    else
    {
        modelExt = NULL;
    }
    return modelExt;
}

QStringList QMyIspratnici::getIspratnicaInfo()
{
	QStringList modelExt;
	modelExt.clear();

	if (ispratniciLista)
	{
		modelExt = ispratniciLista->geInfo();
	} 
	else
	{
		modelExt;
	}
	return modelExt;
}

bool QMyIspratnici::printTovarenList()
{
    bool stat = false;
    if (ispratniciLista)
    {
        stat = ispratniciLista->isCheckedTovarenList();
    } 
    else
    {
        stat = false;
    }
    return stat;
}

bool QMyIspratnici::printMalaIspratnica()
{
	bool stat = false;
	if (ispratniciLista)
	{
		stat = ispratniciLista->isCheckedMalaIspratnica();
	} 
	else
	{
		stat = false;
	}
	return stat;
}

void QMyIspratnici::retPriemnicaToKalkulacija(QString& text, QString& textName, izlFakturaData &mData)
{
	QWidget *sour = getSourceWidget();

	if (qobject_cast<QIzlezniFakturiVnes*>(sour))
	{
		QIzlezniFakturiVnes *dest = qobject_cast<QIzlezniFakturiVnes*>(sour);
		dest->setIspratnicaID(text);
		emit eupdateNanigator(dest->getCategoryWidget(), this);
		dest->setFocusLine2();
	}
	if (qobject_cast<QIzlezniFakturiKorekcija*>(sour))
	{
		QIzlezniFakturiKorekcija *dest = qobject_cast<QIzlezniFakturiKorekcija*>(sour);
		dest->setIspratnicaID(text);
		emit eupdateNanigator(dest->getCategoryWidget(), this);
		dest->setFocusLine2();
	}

	if (qobject_cast<QFinNalVnes*>(sour))
	{
		QFinNalVnes *dest = qobject_cast<QFinNalVnes*>(sour);
		dest->setIspratniciID((QMyBaseFormWidget::izlFakturaData&) mData);
		emit eupdateNanigator(dest->getCategoryWidget(), this);
		dest->setFocusLine2();
	}
	if (qobject_cast<QFinNalKorekcija*>(sour))
	{
		QFinNalKorekcija *dest = qobject_cast<QFinNalKorekcija*>(sour);
		dest->setIspratniciID((QMyBaseFormWidget::izlFakturaData&) mData);
		emit eupdateNanigator(dest->getCategoryWidget(), this);
		dest->setFocusLine2();
	}

	if (qobject_cast<QPLTMVnes*>(sour))
	{
		QPLTMVnes *dest = qobject_cast<QPLTMVnes*>(sour);
		dest->setIspratnicaID(text);
		emit eupdateNanigator(dest->getCategoryWidget(), this);
		dest->setFocusLine2();
	}
	if (qobject_cast<QPLTMKorekcija*>(sour))
	{
		QPLTMKorekcija *dest = qobject_cast<QPLTMKorekcija*>(sour);
		dest->setIspratnicaID(text);
		emit eupdateNanigator(dest->getCategoryWidget(), this);
		dest->setFocusLine2();
	}

}
